import java.util.ArrayList;
import java.util.List;

// 学生类：继承自Person
public class Student extends Person {
    private List<Course> selectedCourses; // 所选课程列表

    // 子类构造方法（调用父类构造器）
    public Student(String id, String name, String gender) {
        super(id, name, gender);
        this.selectedCourses = new ArrayList<>(); // 初始化课程列表
    }

    // 选课方法
    public void selectCourse(Course course) {
        if (!selectedCourses.contains(course)) {
            selectedCourses.add(course);
            System.out.println(name + "（学生编号：" + id + "）选了《" + course.getCourseName() + "》课程");
        } else {
            System.out.println(name + "已选过《" + course.getCourseName() + "》课程");
        }
    }

    // 退课方法
    public void dropCourse(Course course) {
        if (selectedCourses.remove(course)) {
            System.out.println(name + "（学生编号：" + id + "）退了《" + course.getCourseName() + "》课程");
        } else {
            System.out.println(name + "未选《" + course.getCourseName() + "》课程，无法退课");
        }
    }

    // 打印课表
    public void printCourseSchedule() {
        System.out.println("========== " + name + "（学生编号：" + id + "）的课表 ==========");
        if (selectedCourses.isEmpty()) {
            System.out.println("当前没有选课");
        } else {
            for (Course course : selectedCourses) {
                System.out.println("课程名称：" + course.getCourseName() +
                        "，上课地点：" + course.getLocation() +
                        "，时间：" + course.getTime() +
                        "，授课教师：" + course.getTeacher().getName());
            }
        }
        System.out.println("======================================");
    }

    // 重写父类抽象方法：打印学生信息
    @Override
    public void printInfo() {
        System.out.println("学生信息：编号=" + id + ", 姓名=" + name + ", 性别=" + gender + ", 已选课程数=" + selectedCourses.size());
    }
}
